package 双指针;
/**
 *  删除数组重复项
 * 一个有序数组，返回数组取出重复项后的长度
 *
 * 双指针法思路：
 *  1.快指针走一步
 *  2.判断慢指针和快指针指向的元素是否相等
 *  3.如果相等，则快指针重复上面步骤
 *      如果不相等将慢指针的下一个元素替换为快指针指向的元素，慢指针往下走，然后重复上面步骤
 */
public class Ch01_RemoveDuplicates {
    public static void main(String[] args) {
        int[] nums={1,2,2,2,3,3,4,5,6};
        System.out.println(removeDuplicates(nums)); //6
    }

    /**
     * 返回数组取出重复项后的长度
     * @param nums：待去重数组
     * @return：返回数组取出重复项后的长度
     */
    public static int removeDuplicates(int[] nums){
        if (nums==null||nums.length==0) return 0;

        int j=0;
        for (int i=1;i<nums.length;i++){
            if (nums[j]!=nums[i]){
                j++;
                nums[j]=nums[i];
            }
        }
        return j+1;
    }
}
